#include "include/bibteco.h"

int main() {
  set * A;
  set * B;
  set * C;
  set * D;
  set * E;
  set * F;
  set * G;  
  int a;
  char b;
   
  B = emptySet(); 
  a = 13;
  toSet(B,&a,sizeof(int));
  a = 22;
  toSet(B,&a,sizeof(int));
  a = 35;
  toSet(B,&a,sizeof(int));
  a = 13;
  toSet(B,&a,sizeof(int));
  a = 35;
  toSet(B,&a,sizeof(int));
  a = 12;
  toSet(B,&a,sizeof(int));
  printf("Conjunto B: ");
  printSetInt(B);
  
  C = emptySet(); 
  a = 13;
  toSet(C,&a,sizeof(int));
  a = 22;
  toSet(C,&a,sizeof(int));
  a = 99;
  toSet(C,&a,sizeof(int));
  a = 0;
  toSet(C,&a,sizeof(int));
  printf("Conjunto C: ");
  printSetInt(C);
  
  A = setUnion(B,C);
  printf("Conjunto B U C: ");
  printSetInt(A);
  
  A = setIntersection(B,C);
  printf("Conjunto B intersec C: ");
  printSetInt(A);
  
  A = setDifference(B,C);
  printf("Conjunto B - C: ");
  printSetInt(A);
  
  A = setDifference(B,C);
  printf("Conjunto B - C: ");
  printSetInt(A);
  
  A = setProduct(B,C);
  printf("Conjunto B X C: ");
  printSetIntProd(A);
  
  D = emptySet(); 
  b = 'a';
  toSet(D,&b,sizeof(char));
  b = 'b';
  toSet(D,&b,sizeof(char));
  b = 'c';
  toSet(D,&b,sizeof(char));
  b = 'd';
  toSet(D,&b,sizeof(char));
  printf("Conjunto D: ");
  printSetChar(D);
  
  E = emptySet(); 
  b = 'a';
  toSet(E,&b,sizeof(char));
  b = 'b';
  toSet(E,&b,sizeof(char));
  printf("Conjunto E: ");
  printSetChar(E);
  
  b='a';
  if(setBelong(D,&b,sizeof(char)))printf("'a' pertence ao conjunto D\n");
  
  if(setContained(E,D))printf("E estah contido em D\n");
  
  if(setStrictlyContained(E,D))printf("E estah estritamente contido em D\n");
  
  if(!(igualdade(E,D)))printf("E nao eh igual a D\n");  
  
  /* conjunto de conjuntos */
  F = emptySet();
  toSet(F,&A,sizeof(set));
  toSet(F,&D,sizeof(set));
  
  /* conjunto de tipos diferentes */
  G = emptySet(); 
  a = 13;
  toSet(G,&a,sizeof(int));
  b = 'b';
  toSet(G,&b,sizeof(char));
  
  setFree(A);
  setFree(B);
  setFree(C);
  setFree(D);
  setFree(E);
  setFree(F);
  setFree(G);
      
};
